草庐IT

3072 bytes

全部标签

go - 为什么从 byte.Buffer 读取时我会得到一个永无止境的循环

目前我正在编写一个从bytes.Buffer读取缓冲区的程序。它应该在找到字符e时停止阅读。但是当我使用for循环读取缓冲区时,我注意到了一些奇怪的事情。当我将字节读取作为for语句的一部分时,我得到一个无限循环(exampleingoplayground):b:=bytes.NewBuffer([]byte("uoiea"))forv,_:=b.ReadByte();v!='e';{println("Thevalueis"+string(v))}但是如果我删除它并将它放在for循环中,它不会(exampleingoplayground):b:=bytes.NewBuffer([]by

将int转换为byte

varxuint64=257varyint=257fmt.Println("rv1is",byte(x))//okfmt.Println("rv2is",byte(y))//okfmt.Println("rv3is",byte(257))//constant257overflowsbytefmt.Println("rv4is",byte(int(257)))//constant257overflowsbyte这很奇怪。都是int转byte,应该都是error。但是情况1,2没问题!怎么可能呢? 最佳答案 可变数值可以转换为更小的类型

arrays - 为什么我不能将新分配的字节数组分配给类型为 []byte 的变量?

我正在尝试声明一个未指定大小的数组类型变量[]byte,然后用分配的大小为256的数组填充它,如下所示:varbuf[]bytebuf=new([256]byte)不幸的是,它不起作用。返回的编译错误如下:cannotuse*new([256]byte)(type[256]byte)astype[]byteinassignment有什么想法吗? 最佳答案 您想将一个数组分配给一个slice,这是行不通的(参见“GoSlices:usageandinternals”)要改为制作slice,请使用:varbuf[]bytebuf=mak

golang 编译错误 : undefined: bytes in bytes. 缓冲区

我定义了一个结构如下,但总是得到构建错误:“undefined:bytesinbytes.Buffer”typeteststruct{idint64Content[]byteBuffer*bytes.Buffer} 最佳答案 你忘记了import语句。import"bytes" 关于golang编译错误:undefined:bytesinbytes.缓冲区,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

json - 将 json 值解码到 []byte 中,有时字符串可能会被转义 json

我有一个看起来像这样的json响应{"eventId":"fbf4a1a1-b4a3-4dfe-a01f-ec52c34e16e4","eventType":"event-type","eventNumber":0,"data":"{\n\"a\":\"1\"\n}","metaData":"{\n\"yes\":\"no\"\n}","streamId":"test","isJson":true,"isMetaData":true,"isLinkMetaData":false,"positionEventNumber":0,"positionStreamId":"test","tit

go - 将现有的 C 代码集成到 Go。将 unsigned char 指针结果转换为 []byte

这是一个简单的例子:packagemain//#include//#include//#include/*typedefstruct{unsignedchar*data;unsignedintdata_len;}Result;Result*foo(){Result*r=malloc(sizeof(Result));r->data=(unsignedchar*)malloc(10);r->data_len=10;memset(r->data,0,10);r->data=(unsignedchar*)strdup("xxx123");r->data_len=6;returnr;}*/imp

printing - 使用 bytes.replace 时有没有办法使用通配符?

我正在用Go编程,我读取了一个文本文件,我替换了其中的多个内容,将代码从一种语言翻译成Go以便能够运行。我遇到的问题是,当尝试替换Println语句之类的东西时,如果不真正特定于我正在转换的代码,我就无法在语句末尾得到括号。有没有办法使用这样的代码?src=bytes.Replace(src,[]byte("Insert"),[]byte("Println("*")"),-1)并且能够在代码行的末尾放置一个括号? 最佳答案 packagemainimport("fmt""regexp")funcmain(){src:=[]byte(

arrays - 戈朗 : gzip or zlib compression of byte array sporadically hangs

我有以下函数来压缩字节数组:funccompress(input[]byte)[]byte{varbufbytes.Buffercompr:=gzip.NewWriter(&buf)compr.Write(input)//hereitappearstohanguntil//Enterispressedcompr.Close()output:=buf.Bytes()returnoutput}函数偶尔会挂起。当我按下[Enter]时,函数将继续并返回预期结果。我在这里遗漏了什么吗?它会挂起大约五分之一,即使给出相同的输入也是如此。无论我使用gzip还是zlib,都没有关系。我在Linuxx

arrays - Golang 创建 bytes.Buffer 数组的多读取器

我需要创建slice的MultiReader[]*bytes.Bufferbuffer_slice:=...(type[]*bytes.Buffer)当我写io.MultiReader(buffer_slice)我得到错误:不能在io.MultiReader的参数中使用buffer_slice(类型[]*bytes.Buffer)作为io.Reader类型:[]*bytes.Buffer没有实现io.Reader(缺少Read方法)。但是函数签名MultiReader(readers...Reader)Reader我明白了,传输数组没有意义,实际问题:除了琐碎的循环,没有更多的选择吗?

go - 如何处理 bytes.Buffer 流中的 io.EOF?

https://play.golang.org/p/JKXKa7Pvjd我想弄清楚如何使用bytes.Buffer测试我的后台函数,其中流中可以有随机io.EOF?例子:packagemainimport("fmt""io""bytes""time")funcmain(){buffer:=new(bytes.Buffer)gobackground(buffer)i:=0fori我要找的结果是:1)teststring2)teststring3)teststring4)teststring5)teststring如何使用time.Sleep(1*time.Second)模拟延迟来实现这一